import random
#方法1 直接使用random中的choices方法
def choices1(socks=10,shoes=20,slippers=30,necklace=40):
    return random.choices(["socks","shoes","slippers","necklace"],[socks,shoes,slippers,necklace]) 
   
 
 #方法2 
 #从商品中任意抽取一个商品，概率相等，在乘以商品个数即是该商品的概率
 #可以将商品依次标记为袜子、鞋子、拖鞋、项链
def choices2(**kwargs):
        nFlag = random.randint(1,sum(kwargs.values()))
        nSum=0
        for k,v in kwargs.items():
            nSum+=v
            if nFlag<=nSum:
                return k


print("方法1",choices1()[0])            
print("方法2",choices2(socks=10,shoes=20,slippers=30,necklace=40))

# 实现的很好，比例误差都在可接受范围内。
